iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0

我們挑戰的第一個專案是Hello World,這聽起來很容易,不就是建立Spring Boot專案,然後打個Hello World就結束了嗎?然而,對於初學者來說,可能會有些挑戰性。

在正式開始前,我們可以先思考如何建立一個Spring Boot專案。有些人可能會嘗試打開IDE來新建一個專案,但新增的卻是Java專案,而不是Spring Boot專案,這就是我們下一節要學習的內容。

新建Spring Boot專案

我們會使用 IntelliJ IDEA Community 來完成之後的專案,這是一個免費的 IDE。

下載時需要注意一下,別下載到 Ultimate,Ultimate 需要付費,只能試用 30 天。

在 Ultimate 的下方才是我們免費的 Community 版,選擇 exe 版本,安裝過程中一直按 Next 即可。

使用 Spring Initializr 建立專案

接著,我們將使用 Spring Initializr 來創建 Spring Boot 專案。這是 Spring 官方提供的快速配置工具,可以輕鬆設定專案的基本結構和Dependency。以下是設定專案時的一些重點:

  1. 選擇 Spring Boot 版本:Spring Boot 版本經常更新,如果看到的不是 3.3.1 也沒關係,維持預設的版本就好。
  2. Group、Artifact、Description:可以自訂這些欄位,不喜歡 Hello World 改成別的也沒關係。這些欄位用於定義專案的基本資訊。
  3. Dependency:可以選擇需要的Dependency。在Hello World專案,我們只需要選擇Spring Web。

設定完成後,點擊下方的GENERATE下載並解壓縮zip檔。

大家可以參考下圖設定專案

完成Hello World

用 IntelliJ IDEA 打開剛解壓縮完成的專案,等待右下角的進度條完成,這表示 IDEA 正在處理我們的專案並下載所需的Dependency。

建立 Controller

在src/main/java/com/helloworld/Hello/World下,新增一個名為Controller的Package,在裡面新增HelloWorldController.java,Controller的作用是接收HTTP request並回傳對應的內容。

以下是HelloWorldController.java的程式碼,如果在建立專案時修改了Group、Artifact,package的部分會有所不同

package com.helloworld.Hello.World.Controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {
    @RequestMapping("/hello")
    public String hello(){
        return "Hello, World!";
    }
}

儲存後,來到HelloWorldApplication.java,點擊public static void main左邊綠色的三角形啟動專案,只有第一次啟動專案才要這樣,以後我們可以直接在右上角的地方點擊綠色三角形啟動專案。

這時可能需要設定JDK,Version選擇17,Vendor推薦Amazon Corretto,按下Download等待完成後按OK。

打開瀏覽器前往http://localhost:8080/hello,可以看到網頁上顯示Hello, World!

如果出現Whitelabel Error Page可能是Controller資料夾的位置放錯了,正確的專案結構如下圖。

修改port

我們可以透過修改src/main/resources/application.properties變更專案使用的port,在application.properties添加這一行。

server.port=8081

現在我們要到http://localhost:8081/hello 才能看到Hello, World!

Extra

孔乙己說茴香豆的回有四種寫法。
而我們的HelloWorldController也有四種寫法,其中一種我們已經使用了,剩下的三種是

  • 第一種
@ResponseBody
@Controller
public class HelloWorldController {
    @RequestMapping("/hello")
    public String hello(){
        return "Hello, World!";
    }
}
  • 第二種
@ResponseBody
@Controller
@RequestMapping("/hello")
public class HelloWorldController {
    @RequestMapping("")
    public String hello(){
        return "Hello, World!";
    }
}
  • 第三種
@RestController
@RequestMapping("/hello")
public class HelloWorldController {
    @RequestMapping("")
    public String hello(){
        return "Hello, World!";
    }
}

前面那兩種使用@ResponseBody和@Controller比較像炫技的寫法,這邊寫出來是為了讓大家瞭解可以用@ResponseBody和@Controller完成@RestController的功能。

最後一種,現在看不出它的優勢,在下一個專案我們就能看出它的優點,這邊提供一個範例。

public class HelloWorldController {
    @RequestMapping("/hello")
    public String hello(){
        return "Hello, World!";
    }
    @RequestMapping("/hello/spring")
    public String hello(){
        return "Hello, Spring!";
    }
}

我們用第三種的方式改寫,就能少打一些/hello了。

@RequestMapping("/hello")
public class HelloWorldController {
    @RequestMapping("")
    public String hello(){
        return "Hello, World!";
    }
    @RequestMapping("/spring")
    public String hello(){
        return "Hello, Spring!";
    }
}

程式碼

在這邊將完成的專案,提供給大家。

如果專案無法運行,可以用來比對程式哪邊有錯。

https://mega.nz/file/oU0TEA5a#bQntVal2ohH5S3J4FDDkVBxpeq2K8qa8NO-Ld6HALU8


上一篇
Day1 前言
下一篇
Day3 第二個專案:待辦事項清單(1)概念篇
系列文
我的SpringBoot絕學:7+2個專案,從新手變專家31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言